package cn.ld.module.system.service.mail;

import cn.ld.framework.common.pojo.PageResult;
import cn.ld.module.system.controller.admin.mail.vo.account.MailAccountPageInVO;
import cn.ld.module.system.controller.admin.mail.vo.account.MailAccountSaveInVO;
import cn.ld.module.system.dal.entity.mail.MailAccountEntity;

import jakarta.validation.Valid;
import java.util.List;

/**
 * 邮箱账号 Service 接口
 *
 * @author wangjingyi
 * @since 2022-03-21
 */
public interface MailAccountService {

    /**
     * 创建邮箱账号
     *
     * @param createInVO 邮箱账号信息
     * @return 编号
     */
    Long createMailAccount(@Valid MailAccountSaveInVO createInVO);

    /**
     * 修改邮箱账号
     *
     * @param updateInVO 邮箱账号信息
     */
    void updateMailAccount(@Valid MailAccountSaveInVO updateInVO);

    /**
     * 删除邮箱账号
     *
     * @param id 编号
     */
    void deleteMailAccount(Long id);

    /**
     * 获取邮箱账号信息
     *
     * @param id 编号
     * @return 邮箱账号信息
     */
    MailAccountEntity getMailAccount(Long id);

    /**
     * 从缓存中获取邮箱账号
     *
     * @param id 编号
     * @return 邮箱账号
     */
    MailAccountEntity getMailAccountFromCache(Long id);

    /**
     * 获取邮箱账号分页信息
     *
     * @param pageInVO 邮箱账号分页参数
     * @return 邮箱账号分页信息
     */
    PageResult<MailAccountEntity> getMailAccountPage(MailAccountPageInVO pageInVO);

    /**
     * 获取邮箱数组信息
     *
     * @return 邮箱账号信息数组
     */
    List<MailAccountEntity> getMailAccountList();

}
